package com.bjpowernode.javase.array;
/*
    选择排序：
        每一次从这堆参与比较的数据当中找出最小值，拿着这个最小值和最前面的元素交换位置
        选择排序比冒泡排序的效率高，高在交换位置的次数上，每一次的交换位置是有意义的

        选择排序中的关键在于怎么找出一堆数据中最小的

 */
public class SelectSort {
    public static void main(String[] args) {
        int[] arr = {3 , 1 , 4 , 2 , 5};
        for (int i = 0; i < arr.length -1 ; i++) {  //i = 0 1 2 3，i正好是参与比较的这堆数据中最左边的那个元素的下标
            int min = i; //假设最开始的下标数据就是最小的，拿最左边的元素和剩下的元素比一圈大小
            for (int j = i + 1; j < arr.length; j++) {  //j = (1 2 3 4) (2 3 4) (3 4) (4)
                if (arr[j] < arr[min]){
                    min = j;  //最小值元素下标是j
                }
            }
            //相等时表示猜测正确，不相等时，需要拿着这个更小的元素和最左边的元素交换位置
            if (min != i){
                int temp;
                temp = arr[min];
                arr[min] = arr[i];
                arr[i] = temp;
            }
        }
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
    }
}
